1. Field of the Invention
The invention generally relates to managing connections in a SAS domain. More specifically, the invention relates to simplified methods and structures to manage OPEN requests in a SAS initiator device.
2. Discussion of Related Art
Small Computer Systems Interface (“SCSI”) is a set of American National Standards Institute (“ANSI”) standard electronic interface specifications that allow, for example, computers to communicate with peripheral hardware. Common SCSI compatible peripheral devices may include: disk drives, tape drives, Compact Disc-Read Only Memory (“CD-ROM”) drives, CD Read/Write (“CD-RW”), digital versatile disk (“DVD”) drives, printers, scanners, etc. SCSI as originally created included both a command/response data structure specification and an interface and protocol standard for a parallel bus structure for attachment of devices. SCSI has evolved from exclusively parallel interfaces to include both parallel and serial interfaces. “SCSI” is now generally understood as referring either to the communication transport media (parallel bus structures and various serial transports) or to a plurality of primary commands common to most devices and command sets to meet the needs of specific device types as well as a variety of interface standards and protocols.
The collection of primary commands and other command sets may be used with SCSI parallel interfaces as well as with serial interfaces. Examples of serial interface transport media and protocol standards that support SCSI command processing include: Fibre Channel, Serial Bus Protocol (used with the Institute of Electrical and Electronics Engineers 1394 FireWire physical protocol; “IEEE 1394”) and the Serial Storage Protocol (SSP).
SCSI interface transports and commands are also used to interconnect networks of storage devices with processing devices. For example, serial SCSI transport media and protocols such as Serial Attached SCSI (“SAS”) and Serial Advanced Technology Attachment (“SATA”) may be used in such networks. These applications are often referred to as storage networks. Those skilled in the art are familiar with SAS and SATA standards as well as other SCSI related specifications and standards. Information about such interfaces, media, protocols and commands is generally obtainable at the website www.t10.org.
Such SCSI storage networks are often used in large storage systems having a plurality of disk drives to store data for organizations and/or businesses. The network architecture allows storage devices to be physically dispersed in an enterprise while continuing to directly support SCSI commands directly. This architecture allows for distribution of the storage components in an enterprise without the need for added overhead in converting storage requests from SCSI commands into other network commands and then back into lower level SCSI storage related commands.
A SAS network typically comprises one or more SAS initiators coupled to one or more SAS targets via one or more SAS expander devices. In general, as is common in all SCSI communications, SAS initiators initiate communications with SAS targets. In particular, SAS initiators use a process often referred to as “discovery” to determine the topology of devices in the network (i.e., to discover other SAS initiators, SAS expanders and SAS targets). Once such information is known, initiators generally establish the first contacts with a given target device. The initiator issues an “open” request (i.e., a SAS OPEN address frame) to an identified SAS target to establish a first connection with the SAS target device. Once the first connection is so established, either the SAS initiator or the SAS target device may re-establish a connection. For example, a connection may be established initially by the initiator, closed after some transactions are exchanged, and then re-opened by the same initiator for a subsequent sequence of transactions. Or, for example, a SAS target device may have deferred processing of a transaction received from an initiator. At some later time when the SAS target is ready to proceed, the target device may “open” a connection back to the initiator that originally requested the deferred transaction.
In SAS protocol exchanges, SAS initiator devices and SAS target devices (as well as SAS expanders) are identified by an eight byte SAS address. The SAS address is intended as a globally unique ID for the device determined, in part, according to industry standards. In establishing such connections by “open” requests, the recipient of an OPEN request is provided with the SAS address of the requesting transmitter (the source SAS address) and the recipient is identified by its SAS address (the destination SAS address).
SAS initiators and targets usually include a SAS controller integrated circuit or interface chip set for implementing various levels of the SAS communication protocols. Such controller chips or chip sets usually implement various aspects of the SAS protocols in custom designed circuits to maintain desired (or required) levels of performance in the SAS protocol exchanges. In particular, SAS controller circuits used in typical SAS initiators and SAS targets often implement SAS address comparison and detection logic in custom circuits designed within the integrated circuit package or chip set. Such address comparison and detection logic is usually required to permit full speed operation of the SAS protocols to quickly detect that a received frame is intended for an identified recipient or is from a known device.
The design of such SAS address comparison and detection logic is significantly complicated by the need to compare a complete 8-byte SAS address. The sheer size of such a complex, 64-bit identifier makes the corresponding detection and comparison logic large and complex. Such a large, complex circuit design adds cost to the SAS controller, increases the size of the circuit and potentially increases power consumption and heat dissipation requirements. More importantly, in a SAS wide port application where multiple physical links are logically aggregated for use in a SAS exchange, each physical link component may require similar comparison and detection logic. The complex logic may therefore be replicated numerous times in the overall SAS controller design. Such added complexity and added power and cooling requirements may be highly undesirable in various computing and electronics environments.
In view of the above discussion, it is evident that there is an ongoing need for improved systems and methods for reducing the complexity of methods and logic in a SAS controller for comparing and detecting SAS addresses in the establishment and management of connections between SAS initiators and SAS targets.